package org.aurora.framework.boot.domain;

import java.io.Serial;
import java.io.Serializable;
import java.util.Objects;

/**
 * AbstractDomainObject
 * <pre>
 * description:
 * create date: 2025-03-22 19:02:37
 * </pre>
 *
 * @author cao.yong
 */
public abstract class AbstractDomainObject<ID extends Serializable> implements Entity<ID> {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 比较本身与目标对象是否相同对象, 此处通过比较唯一标识来确定是否是相同对象。
     *
     * @param obj 目标对象
     * @return true: 相同，false: 不相同
     */
    @Override
    public boolean equals(Object obj) {
        if (obj == this) return true;
        if (Objects.isNull(obj)) return false;
        if (obj instanceof Entity<?> o) {
            return Objects.equals(getId(), o.getId());
        }
        return false;
    }
}
